home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Communications Toolbox / CTB Sample Code 1.0b16 / CTB Sources / Sources 2 / Terminal Tool for CTB / tloc.p < prev    next >
Encoding:
Text File  |  1989-06-27  |  4.2 KB  |  187 lines  |  [TEXT/MPS ]

  1. { *** =================================================== ***
  2.  
  3.     Purpose:        Terminal tool main localization code 
  4.         module.  This tool basically handles converting
  5.         our config strings to/from the English language. 
  6.  
  7.     Module :        tloc.p
  8.  
  9.     Authors:        Craig Hotchkiss, Alex Kazim, Byron Han, 
  10.                         Carol Lee
  11.                     Apple Computer, Inc.
  12.                     Networks & Communications
  13.                     20525 Mariani Drive
  14.                     Cupertino, CA 95014
  15.  
  16.     Version :        1.0d1
  17.  
  18.     Date :            9.may.89
  19.  
  20.     History :
  21.         9.may.89    Creation date
  22.  
  23.  
  24.     ©1989 Apple Computer, Inc.  All Rights Reserved.
  25.     This software is proprietary to Apple Computer, Inc.
  26.     It may not be copied, in whole or in part,
  27.     without the written consent of Apple Computer, Inc.
  28.  
  29.   *** =================================================== *** }
  30.     
  31.  
  32.  
  33.  
  34. UNIT TERMINALtloc;
  35.  
  36. INTERFACE
  37.  
  38. USES     MemTypes,
  39.         QuickDraw,
  40.         OSIntf,
  41.         ToolIntf,
  42.         PasLibIntf,
  43.         Lists,
  44.         CRMSerialIntf,
  45.         CRMIntf,
  46.         CTBUtils,
  47.         CMIntf,
  48.         TMIntf,
  49.         FTIntf,
  50.         TerminalTool,
  51.         TermGlobalUnit;
  52.  
  53.  
  54.  
  55.  
  56.  
  57. FUNCTION tlocMAIN(hTerm: TermHandle; theMessage: Integer;
  58.     p1, p2, p3: LongInt): LongInt;
  59.  
  60.  
  61. IMPLEMENTATION
  62.  
  63.  
  64.  
  65. FUNCTION TMToolTranslate(tempPrivatePtr: TERMINALPrivatePtr; 
  66.     theProcID: Integer; pEnglishStr: Ptr; VAR outputPtr: Ptr; 
  67.     fromLanguage: LongInt; toLanguage: LongInt; 
  68.     tempConfigPtr: Ptr): LongInt;
  69.                     FORWARD;
  70.  
  71.  
  72.  
  73. FUNCTION tlocMAIN(hTerm: TermHandle; theMessage: Integer;
  74.     p1, p2, p3: LongInt): LongInt;
  75.  
  76. { The integer value 'theMessage' here decides if we going from Eng.
  77. to an international language or vice versa.  It uses the same procedure
  78. to toggle values. } 
  79.  
  80. TYPE
  81.     PtrPtr = ^Ptr;
  82. VAR
  83.     theProcID: Integer;
  84.     outputPtr: Ptr;
  85.     tempConfigPtr: Ptr;
  86.     
  87.     tempPrivatePtr: TERMINALPrivatePtr;
  88. BEGIN
  89.     outputPtr := PtrPtr(p2)^;
  90.  
  91.     tempPrivatePtr := TERMINALPrivatePtr(hTerm^^.tmPrivate);
  92.     theProcID := hTerm^^.procID;
  93.     tempConfigPtr := hTerm^^.config;
  94.  
  95.     CASE theMessage OF
  96.             TML2English:
  97.                 tlocMAIN := TMToolTranslate(tempPrivatePtr, theProcID, 
  98.                     Ptr(p1), outputPtr, p3, verUS, tempConfigPtr);
  99.             TML2Intl:
  100.                 tlocMAIN := TMToolTranslate(tempPrivatePtr, theProcID, 
  101.                     Ptr(p1), outputPtr, verUS, p3, tempConfigPtr);
  102.             OTHERWISE
  103.                 tlocMain := 0;
  104.     END; { CASE }
  105.     PtrPtr(p2)^ := outputPtr;
  106. END; { of func TermToolLocalize }
  107.  
  108.  
  109.  
  110. FUNCTION TMToolTranslate(tempPrivatePtr: TERMINALPrivatePtr; 
  111.     theProcID: Integer; pEnglishStr: Ptr; VAR outputPtr: Ptr; 
  112.     fromLanguage: LongInt; toLanguage: LongInt; 
  113.     tempConfigPtr: Ptr): LongInt;
  114.  
  115. { Our common procedure performs a similar function to GetConfig
  116. in that it returns a space delimited string of the current language.
  117. See module tscr.p for further reference. }
  118.  
  119. VAR
  120.     tempString: Str255;
  121.     storeStr: Str255;
  122.     mBTemp: Str255;
  123.     mBString: Str255;
  124.     memErrorCheck: Integer;
  125.     
  126.     pConfig: TerminalPtr;
  127. BEGIN
  128.     fromLanguage := CRMLocalToRealID
  129.         (ClassTM, theProcID, 'STR#', fromLanguage);
  130.     toLanguage := CRMLocalToRealID
  131.         (ClassTM, theProcID, 'STR#', toLanguage);
  132.     IF (toLanguage = -1) THEN
  133.         BEGIN
  134.             TMToolTranslate := -1;
  135.             outputPtr := NIL;
  136.             Exit(TMToolTranslate);
  137.         END;
  138.     storeStr := '';
  139.     pConfig := TerminalPtr(tempConfigPtr);
  140.     
  141.     GetIndString(tempString, toLanguage, onlineBoolean);
  142.     storeStr := Concat(storeStr, tempString, ' ');
  143.     IF pConfig^.onlineBoolean THEN
  144.         GetIndString(tempString, toLanguage, trueID)
  145.     ELSE
  146.         GetIndString(tempString, toLanguage, falseID);
  147.     storeStr := Concat(storeStr, tempString, ' ');
  148.  
  149.  
  150.  
  151.     GetIndString(tempString, toLanguage, screen132Boolean);
  152.     storeStr := Concat(storeStr, tempString, ' ');
  153.     IF pConfig^.screenWidth THEN
  154.         GetIndString(tempString, toLanguage, trueID)
  155.     ELSE
  156.         GetIndString(tempString, toLanguage, falseID);
  157.     storeStr := Concat(storeStr, tempString, ' ');
  158.     
  159.  
  160.  
  161.     GetIndString(tempString, toLanguage, cursorStyleBoolean);
  162.     storeStr := Concat(storeStr, tempString, ' ');
  163.     IF pConfig^.cursorStyle THEN
  164.         GetIndString(tempString, toLanguage, trueID)
  165.     ELSE
  166.         GetIndString(tempString, toLanguage, falseID);
  167.  
  168.     storeStr := Concat(storeStr, tempString, Chr($0));
  169.         { The string should be complete now }
  170.  
  171.     outputPtr := NewPtrClear(Length(storeStr));
  172.     memErrorCheck := MemError;
  173.     IF memErrorCheck <> noErr THEN
  174.         BEGIN
  175.             outputPtr := NIL;
  176.             TMToolTranslate := -1;
  177.             Exit(TMToolTranslate);
  178.         END;
  179.  
  180.     BlockMove(Ptr(Ord4(@storeStr) + 1), outputPtr, Length(storeStr));
  181.     tempPrivatePtr^.currentLanguage := Integer(toLanguage); 
  182.     TMToolTranslate := 0;
  183. END;
  184.  
  185.  
  186. END.
  187.